<?php

// importacao do modulo de validacao
module_load_include('inc', 'modalidades', 'modalidades.validacao');

/** Formulario de cadastro de bolsas */
function bolsas_form($form, &$form_state, $bolsa) {
	$form['bolsa'] = array(
			'#type' 		=> 'value',
			'#value' 		=> $bolsa,
	);
	
	$form['cpf'] = array(
			'#type' 		=> 'textfield',
			'#required' => TRUE,
			'#title' 		=> t('CPF do Aluno'),
	);
	
	$form['modalidade'] = array(
			'#type' 		=> 'select',
			'#options' 	=> package_entities(Modalidade::TYPE),
			'#required' => TRUE,
			'#title' 		=> t('Modalidade de Bolsa'),
	);
		
	$form['venc'] = array(
			'#title' => t('Duração da bolsa'),
			'#type' => 'radios',
			'#default_value' => 1,
			'#options' => array(1 => 'O vencimento será ao fim do tempo normal do curso.', 
													2 => 'Determinar manualmente o vencimento da bolsa.')
	);
	
	$form['vencimento'] = array(
			'#type' => 'date_popup',
  		'#title' => t('Vencimento'),
			'#date_format' => 'd/m/Y',
  		'#date_year_range' => '-0:+10',
			'#states' 	=> array(
					'visible' => array( 
							':input[name="venc"]' => array('value' => 2),
					),
			),
	);
	
	// submissao do formulario
	$form['submit'] = array(
			'#type' => 'submit',
			'#value' => t('Vincular'),
	);

	return $form;
}

/** Validacao do Bolsista */
function bolsas_form_validate($form, &$form_state) {
	/*$bolsa 							= $form_state['values']['bolsa'];
	$bolsa->modalidade 	= DAO::daoFactory(Modalidade::TYPE)->get($form_state['values']['modalidade']);
	$aluno 							= DAO::daoFactory(Aluno::TYPE)->getByCpf($form_state['values']['cpf'] );
	
	// Validacao da bolsa
	$validacao_result = validate($aluno, $bolsa);
	if ($validacao_result != VALIDATE_OK) {
		form_set_error(t($validacao_result) );
	}*/
}

/** Submete a nova Bolsa no banco */
function bolsas_form_submit($form, &$form_state) {
	$bolsa = new stdClass();	
	
	$aluno = DAO::daoFactory(Aluno::TYPE)->getByCpf($form_state['values']['cpf']);
	$bolsa->aluno_id = $aluno->id;	
	$bolsa->modalidade_id = $form_state['values']['modalidade'];	
	$bolsa->inicio = date('d/m/Y');
	
	$vencimento_auto = $form_state['values']['venc'] == 1 ? TRUE : FALSE;
	
	if ($vencimento_auto) {
		$bolsa->fim = calculaDuracao($aluno->curso->duracao, strtotime($aluno->entrada) );
	} else {
		$bolsa->fim = date('d/m/Y', strtotime($form_state['values']['vencimento']) );
	}
	
	$bolsa->ativo = 1;
	
	$bolsa = DAO::daoFactory(Bolsa::TYPE)->add($bolsa);
	$form_state['redirect'] = "bolsas/";
}

/* Pesquisa */

/** Formulario de pesquisa */
function bolsas_pesquisar_form($form, &$form_state) {
	$form['pesquisar'] = array(
			'#title' => t('Selecione uma opção:'),
			'#type' => 'radios',
			'#options' => array (
					'inativos' 		=> t('Inativos'),
					'ativos'   		=> t('Ativos'),
					'especifico' 	=> t('Bolsista em específico')
			),			
	);
	
	$form['bolsista'] = array(
			'#type' 		=> 'textfield',
			'#title' 		=> t('Nome ou CPF do Bolsista'),
			'#autocomplete_path' => 'bolsas/listar',
			'#states' 	=> array(
					'visible' => array( 
							':input[name="pesquisar"]' => array('value' => 'especifico'),
					),
			),
	);

	$form['search'] = array(
			'#type' => 'submit',
			'#value' => t('Pesquisar'),
	);

	return $form;
}

/** Valida formulario de pesquisa */
function bolsas_pesquisar_form_validate($form, &$form_state) {
	$pesquisar = $form_state['values']['pesquisar'];
	
	$consultar = $form_state['values']['bolsista'];
	$bolsistas = DAO::daoFactory(Aluno::TYPE)->listar();
	
	if (!empty($bolsistas) ) {
		foreach ($bolsistas as $bolsista) {
			if($consultar == $bolsista->cpf || $consultar == $bolsista->nome) {				
				drupal_goto('bolsas/pesquisar/bolsista/'.$bolsista->id);
				return;
			}	
		}	
	}
	
	drupal_goto('bolsas/pesquisar/'. ($pesquisar == 'ativos' ? 1 : 0));
}


/* Funcoes utilitarias */

/** Calcula a duracao de uma bolsa */
function calculaDuracao($duracao_curso, $entrada) {
	$tempo_corrido  = time() - $entrada; // diferenca entre hoje e o dia que o bolsista entrou	
	$tempo_duracao  = $duracao_curso * 6 * 30 * 24 * 60 * 60; // tempo de duracao de um curso em milissegundos
	$tempo_restante = $tempo_duracao - $tempo_corrido; // tempo que falta para acabar com o curso
	
	db_query('insert into debug_tempo (tempo_corrido, tempo_duracao, tempo_restante, time) values ('.$tempo_corrido.', '.$tempo_duracao.', '.$tempo_restante.', '.time().')');
	
	
	return date('d/m/Y', time() + $tempo_restante);
}


